#pragma once
#include <Rz/IObject.h>
#include <Rz/Graphics/Render/IBuffer.h>

namespace Rz { namespace Graphics { namespace Render {

enum class BufferObjectType
{
	None,
	VertexBuffer,
	IndexBuffer,
	UniformBuffer
};

class IArrayBuffer :
	virtual public IObject,
	virtual public IBuffer
{
	public:
		RZ_RTTI_INTERFACE(Rz::Graphics::Render, IArrayBuffer);
		RZ_RTTI_IMPLEMENTS(IObject, IBuffer);
		RZ_RTTI_END;

		virtual u32 GetSize() const { return _bufferSize; }
		virtual BufferObjectType GetBufferType() const { return _bufferType; }
		
	protected:
		virtual void SetBufferType(BufferObjectType bufferType) { _bufferType = bufferType; }
		virtual void SetSize(u32 newSize) { _bufferSize = newSize; }

	private:
		BufferObjectType _bufferType;
		u32 _bufferSize;
};

} } }
